package com.example.sword;

public class Test33 {

    public static void main(String[] args) {
        System.out.println("haha");
        System.out.println(GetUglyNumber_Solution(2));
    }


    /**
     * 把只包含质因子2、3和5的数称作丑数（Ugly Number）。例如6、8都是丑数，但14不是，因为它包含质因子7。
     * 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。
     */

//    public static int GetUglyNumber_Solution(int index) {
//
//        if (index<=0){
//            return -1;
//        }
//
//        int n =0;
//        int num = 0;
//        while (n<index){
//            if (isUgly(num)){
//                n++;
//            }
//            num++;
//        }
//        return n;
//    }
    public static int GetUglyNumber_Solution(int index) {

       if(index<=1)return index;
       int t2 = 0, t3 = 0, t5 = 0;//3个指针指向三个数组的角标
       int a[] = new int[index];
       a[0] = 1;

        for (int i = 1; i < index; i++) {
            int minNum = Math.min(Math.min(a[t2]*2,a[t3]*3),a[t5]*5);
            if (minNum == a[t2]*2) t2++;
            if (minNum == a[t3]*3) t3++;
            if (minNum == a[t5]*5) t5++;
            a[i] = minNum;
        }
        return a[index-1];


    }

}
